Эти две функции получают и устанавливают число, которое характеризует глубину дампа.
int GetDepth( ) const; void SetDepth( int nNewDepth ); // nNewDepth новая глубина дампа
Я немного отвлекусь и скажу, что операции << работают только при динамической компоновке приложения MFC. Вы должны выбрать USE MFC as shared DLL.
Обычно данные функции применяют для массивов объектов, чтобы в процессе отладки можно было просмотреть содержание всех переменных. Вот так-то можно сделать.
#include "stdafx.h"
#include "afxwin.h"
#include "iostream.h"
class CAge : public CObject
{
public:
CAge(int x);
CAge();
#ifdef _DEBUG
void Dump(CDumpContext& dc) const;
#endif
protected:
DECLARE_DUCREATE(CAge);
private:
int xx;
};
CAge::CAge(int x)
{xx=x;}
CAge::CAge()
{ xx=0; }
IMPLEMENT_DUNCREATE(CAge,CObject);
#ifdef _DEBUG
void CAge::Dump( CDumpContext& dc ) const
{
CObject::Dump(dc);
dc << xx;
}
#endif
void main()
{
CObArray array;
array.Add( new CAge( 21 ) );
array.Add( new CAge( 40 ) );
#ifdef _DEBUG
afxDump.SetDepth(0);
afxDump << array;
afxDump << "---------\n";
afxDump.SetDepth(1);
afxDump << array;
#endif
delete array.GetAt(0) ;
delete array.GetAt(1);
}
Вот какие результаты в зависимости от установки SetDepth.
a CObArray at $64FDC8 with 2 elements --------- // SetDepth(1) !!!! a CObArray at $64FDC8 with 2 elements [0] = a CObject at $770D10 21 [1] = a CObject at $7707A0 40